/**
 * <copyright>
 * </copyright>
 *

 */
package br.pucrio.inf.tamdera.impl;

import br.pucrio.inf.tamdera.ConceptDeclaration;
import br.pucrio.inf.tamdera.ConceptMap;
import br.pucrio.inf.tamdera.Constraint;
import br.pucrio.inf.tamdera.ConstraintSetDeclaration;
import br.pucrio.inf.tamdera.DependencyRuleDeclaration;
import br.pucrio.inf.tamdera.MetricConstraint;
import br.pucrio.inf.tamdera.NameClassMapping;
import br.pucrio.inf.tamdera.PackageMapping;
import br.pucrio.inf.tamdera.Paragraph;
import br.pucrio.inf.tamdera.ParentMapping;
import br.pucrio.inf.tamdera.PrefixMapping;
import br.pucrio.inf.tamdera.RegExpressionMapping;
import br.pucrio.inf.tamdera.RulesSpecification;
import br.pucrio.inf.tamdera.SuffixMapping;
import br.pucrio.inf.tamdera.TamderaFactory;
import br.pucrio.inf.tamdera.TamderaPackage;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class TamderaPackageImpl extends EPackageImpl implements TamderaPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rulesSpecificationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass paragraphEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass constraintSetDeclarationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass conceptDeclarationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dependencyRuleDeclarationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass packageMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass regExpressionMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass parentMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass prefixMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass suffixMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass nameClassMappingEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass conceptMapEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass constraintEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass metricConstraintEClass = null;

  /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see br.pucrio.inf.tamdera.TamderaPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private TamderaPackageImpl()
  {
    super(eNS_URI, TamderaFactory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link TamderaPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static TamderaPackage init()
  {
    if (isInited) return (TamderaPackage)EPackage.Registry.INSTANCE.getEPackage(TamderaPackage.eNS_URI);

    // Obtain or create and register package
    TamderaPackageImpl theTamderaPackage = (TamderaPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof TamderaPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new TamderaPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theTamderaPackage.createPackageContents();

    // Initialize created meta-data
    theTamderaPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theTamderaPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(TamderaPackage.eNS_URI, theTamderaPackage);
    return theTamderaPackage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRulesSpecification()
  {
    return rulesSpecificationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRulesSpecification_Paragraphs()
  {
    return (EReference)rulesSpecificationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getParagraph()
  {
    return paragraphEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConstraintSetDeclaration()
  {
    return constraintSetDeclarationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getConstraintSetDeclaration_Name()
  {
    return (EAttribute)constraintSetDeclarationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConstraintSetDeclaration_Constraints()
  {
    return (EReference)constraintSetDeclarationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConceptDeclaration()
  {
    return conceptDeclarationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getConceptDeclaration_Name()
  {
    return (EAttribute)conceptDeclarationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConceptDeclaration_ConceptMapper()
  {
    return (EReference)conceptDeclarationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConceptDeclaration_Constraints()
  {
    return (EReference)conceptDeclarationEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConceptDeclaration_ReferredConstraintSets()
  {
    return (EReference)conceptDeclarationEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDependencyRuleDeclaration()
  {
    return dependencyRuleDeclarationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDependencyRuleDeclaration_Source()
  {
    return (EReference)dependencyRuleDeclarationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDependencyRuleDeclaration_Type()
  {
    return (EAttribute)dependencyRuleDeclarationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getDependencyRuleDeclaration_Relation()
  {
    return (EAttribute)dependencyRuleDeclarationEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDependencyRuleDeclaration_Target()
  {
    return (EReference)dependencyRuleDeclarationEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPackageMapping()
  {
    return packageMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPackageMapping_PackageName()
  {
    return (EAttribute)packageMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRegExpressionMapping()
  {
    return regExpressionMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRegExpressionMapping_RegExpression()
  {
    return (EAttribute)regExpressionMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getParentMapping()
  {
    return parentMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getParentMapping_Parent()
  {
    return (EAttribute)parentMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPrefixMapping()
  {
    return prefixMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getPrefixMapping_PrefixName()
  {
    return (EAttribute)prefixMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSuffixMapping()
  {
    return suffixMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getSuffixMapping_SuffixName()
  {
    return (EAttribute)suffixMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNameClassMapping()
  {
    return nameClassMappingEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNameClassMapping_NameOfClass()
  {
    return (EAttribute)nameClassMappingEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConceptMap()
  {
    return conceptMapEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConstraint()
  {
    return constraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getMetricConstraint()
  {
    return metricConstraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getMetricConstraint_Metric()
  {
    return (EAttribute)metricConstraintEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getMetricConstraint_Operator()
  {
    return (EAttribute)metricConstraintEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getMetricConstraint_Value()
  {
    return (EAttribute)metricConstraintEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public TamderaFactory getTamderaFactory()
  {
    return (TamderaFactory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    rulesSpecificationEClass = createEClass(RULES_SPECIFICATION);
    createEReference(rulesSpecificationEClass, RULES_SPECIFICATION__PARAGRAPHS);

    paragraphEClass = createEClass(PARAGRAPH);

    constraintSetDeclarationEClass = createEClass(CONSTRAINT_SET_DECLARATION);
    createEAttribute(constraintSetDeclarationEClass, CONSTRAINT_SET_DECLARATION__NAME);
    createEReference(constraintSetDeclarationEClass, CONSTRAINT_SET_DECLARATION__CONSTRAINTS);

    conceptDeclarationEClass = createEClass(CONCEPT_DECLARATION);
    createEAttribute(conceptDeclarationEClass, CONCEPT_DECLARATION__NAME);
    createEReference(conceptDeclarationEClass, CONCEPT_DECLARATION__CONCEPT_MAPPER);
    createEReference(conceptDeclarationEClass, CONCEPT_DECLARATION__CONSTRAINTS);
    createEReference(conceptDeclarationEClass, CONCEPT_DECLARATION__REFERRED_CONSTRAINT_SETS);

    dependencyRuleDeclarationEClass = createEClass(DEPENDENCY_RULE_DECLARATION);
    createEReference(dependencyRuleDeclarationEClass, DEPENDENCY_RULE_DECLARATION__SOURCE);
    createEAttribute(dependencyRuleDeclarationEClass, DEPENDENCY_RULE_DECLARATION__TYPE);
    createEAttribute(dependencyRuleDeclarationEClass, DEPENDENCY_RULE_DECLARATION__RELATION);
    createEReference(dependencyRuleDeclarationEClass, DEPENDENCY_RULE_DECLARATION__TARGET);

    packageMappingEClass = createEClass(PACKAGE_MAPPING);
    createEAttribute(packageMappingEClass, PACKAGE_MAPPING__PACKAGE_NAME);

    regExpressionMappingEClass = createEClass(REG_EXPRESSION_MAPPING);
    createEAttribute(regExpressionMappingEClass, REG_EXPRESSION_MAPPING__REG_EXPRESSION);

    parentMappingEClass = createEClass(PARENT_MAPPING);
    createEAttribute(parentMappingEClass, PARENT_MAPPING__PARENT);

    prefixMappingEClass = createEClass(PREFIX_MAPPING);
    createEAttribute(prefixMappingEClass, PREFIX_MAPPING__PREFIX_NAME);

    suffixMappingEClass = createEClass(SUFFIX_MAPPING);
    createEAttribute(suffixMappingEClass, SUFFIX_MAPPING__SUFFIX_NAME);

    nameClassMappingEClass = createEClass(NAME_CLASS_MAPPING);
    createEAttribute(nameClassMappingEClass, NAME_CLASS_MAPPING__NAME_OF_CLASS);

    conceptMapEClass = createEClass(CONCEPT_MAP);

    constraintEClass = createEClass(CONSTRAINT);

    metricConstraintEClass = createEClass(METRIC_CONSTRAINT);
    createEAttribute(metricConstraintEClass, METRIC_CONSTRAINT__METRIC);
    createEAttribute(metricConstraintEClass, METRIC_CONSTRAINT__OPERATOR);
    createEAttribute(metricConstraintEClass, METRIC_CONSTRAINT__VALUE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    constraintSetDeclarationEClass.getESuperTypes().add(this.getParagraph());
    conceptDeclarationEClass.getESuperTypes().add(this.getParagraph());
    dependencyRuleDeclarationEClass.getESuperTypes().add(this.getParagraph());
    packageMappingEClass.getESuperTypes().add(this.getConceptMap());
    regExpressionMappingEClass.getESuperTypes().add(this.getConceptMap());
    parentMappingEClass.getESuperTypes().add(this.getConceptMap());
    prefixMappingEClass.getESuperTypes().add(this.getConceptMap());
    suffixMappingEClass.getESuperTypes().add(this.getConceptMap());
    nameClassMappingEClass.getESuperTypes().add(this.getConceptMap());
    metricConstraintEClass.getESuperTypes().add(this.getConstraint());

    // Initialize classes and features; add operations and parameters
    initEClass(rulesSpecificationEClass, RulesSpecification.class, "RulesSpecification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRulesSpecification_Paragraphs(), this.getParagraph(), null, "paragraphs", null, 0, -1, RulesSpecification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(paragraphEClass, Paragraph.class, "Paragraph", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(constraintSetDeclarationEClass, ConstraintSetDeclaration.class, "ConstraintSetDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getConstraintSetDeclaration_Name(), ecorePackage.getEString(), "name", null, 0, 1, ConstraintSetDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getConstraintSetDeclaration_Constraints(), this.getConstraint(), null, "constraints", null, 0, -1, ConstraintSetDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(conceptDeclarationEClass, ConceptDeclaration.class, "ConceptDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getConceptDeclaration_Name(), ecorePackage.getEString(), "name", null, 0, 1, ConceptDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getConceptDeclaration_ConceptMapper(), this.getConceptMap(), null, "conceptMapper", null, 0, 1, ConceptDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getConceptDeclaration_Constraints(), this.getConstraint(), null, "constraints", null, 0, -1, ConceptDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getConceptDeclaration_ReferredConstraintSets(), this.getConstraintSetDeclaration(), null, "referredConstraintSets", null, 0, -1, ConceptDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(dependencyRuleDeclarationEClass, DependencyRuleDeclaration.class, "DependencyRuleDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDependencyRuleDeclaration_Source(), this.getConceptDeclaration(), null, "source", null, 0, 1, DependencyRuleDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getDependencyRuleDeclaration_Type(), ecorePackage.getEString(), "type", null, 0, 1, DependencyRuleDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getDependencyRuleDeclaration_Relation(), ecorePackage.getEString(), "relation", null, 0, 1, DependencyRuleDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDependencyRuleDeclaration_Target(), this.getConceptDeclaration(), null, "target", null, 0, 1, DependencyRuleDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(packageMappingEClass, PackageMapping.class, "PackageMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPackageMapping_PackageName(), ecorePackage.getEString(), "packageName", null, 0, 1, PackageMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(regExpressionMappingEClass, RegExpressionMapping.class, "RegExpressionMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRegExpressionMapping_RegExpression(), ecorePackage.getEString(), "regExpression", null, 0, 1, RegExpressionMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(parentMappingEClass, ParentMapping.class, "ParentMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getParentMapping_Parent(), ecorePackage.getEString(), "parent", null, 0, 1, ParentMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(prefixMappingEClass, PrefixMapping.class, "PrefixMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getPrefixMapping_PrefixName(), ecorePackage.getEString(), "prefixName", null, 0, 1, PrefixMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(suffixMappingEClass, SuffixMapping.class, "SuffixMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSuffixMapping_SuffixName(), ecorePackage.getEString(), "suffixName", null, 0, 1, SuffixMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(nameClassMappingEClass, NameClassMapping.class, "NameClassMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNameClassMapping_NameOfClass(), ecorePackage.getEString(), "nameOfClass", null, 0, 1, NameClassMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(conceptMapEClass, ConceptMap.class, "ConceptMap", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(constraintEClass, Constraint.class, "Constraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(metricConstraintEClass, MetricConstraint.class, "MetricConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getMetricConstraint_Metric(), ecorePackage.getEString(), "metric", null, 0, 1, MetricConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getMetricConstraint_Operator(), ecorePackage.getEString(), "operator", null, 0, 1, MetricConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getMetricConstraint_Value(), ecorePackage.getEString(), "value", null, 0, 1, MetricConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Create resource
    createResource(eNS_URI);
  }

} //TamderaPackageImpl
